package com.newtouch.bxzs.business.enclosure.service;

import com.newtouch.bxzs.business.enclosure.model.FileVO;
import com.newtouch.bxzs.common.base.model.vo.EnclosureVO;
import org.springframework.core.io.InputStreamResource;
import org.springframework.http.ResponseEntity;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.HashMap;
import java.util.List;

/**
 * 附件相关操作service类
 *
 * <p>
 * <b>History:</b>
 * <table border="1">
 * <tr>
 * <th>Date</th>
 * <th>Operator</th>
 * <th>Memo</th>
 * </tr>
 * <tr>
 * <td>2020年12月31日</td>
 * <td>Amour</td>
 * <td>Create</td>
 * </tr>
 * </table>
 * 
 * @author Amour
 * 
 * @version 1.0.0
 * @since 1.0.0
 */
public interface AttachmentService {

	/**
	 * 单个附件上传
	 * 
	 * @param file
	 *            附件
	 * @param url
	 *            路径
	 * @param type
	 *            类型
	 * @return
	 */
	String uploadFile(MultipartFile file, String url, String type);

	/**
	 * 批量上传附件
	 * 
	 * @param files
	 *            附件
	 * @param targetFileNames
	 *            忽略的文件名
	 * @param url
	 *            路径
	 * @param type
	 *            类型
	 * @return
	 */
	List<String> uploadFile(List<MultipartFile> files, List<String> targetFileNames, String url, String type);

	/**
	 * 查询附件信息
	 * 
	 * @param enclosureVO
	 * @return
	 */
	HashMap<String, List<String>> getEnclosureList(EnclosureVO enclosureVO);

	/**
	 * 下载附件
	 * 
	 * @param url
	 *            附件路径
	 * @return
	 */
	ResponseEntity<InputStreamResource> downloadFile(String url) throws IOException;

	/**
	 * 生成文件路径
	 * 
	 * @param fileVO
	 */
	String createFileUrl(FileVO fileVO);
}
